iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
影片教學

『請你跟我這樣做』- 30 天 TDD 出一個 SLOT 算分器系列 第 27

Day 27 Recovery 2/2 用 Memento 實現 Recovery

  • 分享至 

  • xImage
  •  

Yes

TDD ft. Recovery

在實踐 Recovery 時,按 TDD 的流程,我們要先給一個壞掉的測試。這裡既然我們已經決定要用 Memento 設計模式了,我們步伐就會稍微大一點。我們直接把我們希望最終的儲存與還原的流程直接寫出來,於是我們就有了第一個壞掉的測試。

第二步我們要做的事情是把 Base Game 給儲存並還原回來。對於 Base Game來說,最重要的就是 Game Flow 裡面的滾輪的當前狀態。因為這個遊戲是 5 × 3 的遊戲,所以我們會得到一個長度為 5 的 List,其中每個元素都代表每個滾輪現在的位置。我們把這個東西放到備忘錄裡面,然後在最後 Restore 回來時把這五個數字塞回遊戲裡的每個滾輪當中,於是就完成了 Bass Game 的 Restore。

第三步我們要把遊戲的狀態也把它儲存下來,於是我們儲存了 Free Game Count。如果是 0,則代表現在是 Base Game,大於 0 則代表現在是 Free Game。那把這個東西也儲存到備忘錄之中,當 Restore 回來時,遊戲的狀態就不會錯了

最後一步我們才去處理 Free Game 的 Position。在這個範例中,我們的 Free Game 是3 × 3 的遊戲,於是我們得到的 Positions 應該是一個長度為 3 的 Integer List。我們一樣就把它放到備忘錄中儲存下來,並且在待會 Restore 回來時,一個一個滾輪把他們的 Position 換成當初儲存下來的 Position。

至此,Slot 遊戲當中三個主要特徵 Base Game Positions,Free Game Positions,以及 Free Game Count 就被我們儲存下來並且也確實的 Restore 了回來。

這就是我們呈現的 Recovery 解決方案。


上一篇
Day 26 Recovery 1/2 簡介與壞掉的 Test
下一篇
Day 28 善用依賴注入,動態決定 trigger free game 的規則
系列文
『請你跟我這樣做』- 30 天 TDD 出一個 SLOT 算分器30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言